package com.gopay.remote.bank;

import com.gopay.common.Result;
import com.gopay.common.domain.bank.ExPayBaseMessage;

/**
 * 快捷操作远程接口
 * 
 * @ExPayInteractRemoteService.java
 * @author WangHongFei
 */
public interface ExPayInteractRemoteService {

	/**
     * 快捷签约接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result sign(ExPayBaseMessage baseMsg);

    /**
     * 验签
     * 
     * @param object
     * @return
     */
    public Result verify(ExPayBaseMessage baseMsg);

    /**
     * 合约查询
     * 
     * @param object
     * @return
     */
    public Result treatyQuery(ExPayBaseMessage baseMsg);

    /**
     * 解约操作(特殊处理，其他解约在父类sign方法中完成)
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result cancel(ExPayBaseMessage baseMsg);

    /**
     * 快捷支付付款接口
     * 
     * @param baseMsg
     * @return ExPayBaseMessage
     * @throws Exception
     *             超时等信息需捕获处理
     */
    public Result payment(ExPayBaseMessage baseMsg);

    /**
     * 快捷支付退款接口
     * 
     * @param baseMsg
     * @return ExPayBaseMessage
     * @throws Exception
     *             超时等信息需捕获处理
     */
    public Result refund(ExPayBaseMessage baseMsg);
    
    /**
     * 快捷支付退款查询接口
     * 
     * @param baseMsg
     * @return ExPayBaseMessage
     * @throws Exception
     *             超时等信息需捕获处理
     */
 //   public Result refundQuery(ExPayBaseMessage baseMsg);
    
	/**
     * 快捷订单查询接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result queryOrder(ExPayBaseMessage baseMsg);
    
    /**
     * 快捷支付认证接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result certification(ExPayBaseMessage baseMsg);
    
    /**
     * 快捷发送短信接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result sendSms(ExPayBaseMessage baseMsg);
    
    /**
     * 快捷验证短信接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result checkSms(ExPayBaseMessage baseMsg);
    
    /**
     * 快捷是否输入cvv2接口
     * 
     * @param baseMsg
     * @return
     * @throws Exception
     */
    public Result queryCvn(ExPayBaseMessage baseMsg);
    
    /** 
     * 查询是否需要调用鉴权接口
     * 
     * @param baseMsg
     * @return 
     */
    public Result queryNeedCert(ExPayBaseMessage baseMsg);
    
    /**
     * 退款验签
     * @param baseMsg
     * @return 
     */
    public Result refundBack(ExPayBaseMessage baseMsg);
}
